/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hr.fer.zpr.nmbp.project2.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;

@Entity
@Table(name="LIJECNIK"
    ,schema="PUBLIC"
    ,catalog="EBOLNICA"
)
public class Lijecnik implements Serializable {
    
    private String sifra;   //primarni ključ, umjetno generiran
    private String ime;
    private String prezime;
    
    private Bolnica bolnica;
    private List<Pacijent> pacijenti = new ArrayList<Pacijent>();

    public Lijecnik() {
    }
    public Lijecnik(String sifra) {
        this.sifra = sifra;
    }
    public Lijecnik(String sifra, Bolnica bolnica, String ime, String prezime, List pacijenti) {
       this.sifra = sifra;
       this.bolnica = bolnica;
       this.ime = ime;
       this.prezime = prezime;
       this.pacijenti = pacijenti;
    }
    
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="BOLNICA_SIFRA")
    public Bolnica getBolnica() {
        return bolnica;
    }

    public void setBolnica(Bolnica bolnica) {
        this.bolnica = bolnica;
    }

    @Id
    @Column(name="SIFRA", unique=true, nullable=false)
    public String getSifra() {
        return sifra;
    }

    public void setSifra(String sifra) {
        this.sifra = sifra;
    }

    @Column(name="IME")
    public String getIme() {
        return ime;
    }

    public void setIme(String ime) {
        this.ime = ime;
    }

    @Column(name="PREZIME")
    public String getPrezime() {
        return prezime;
    }

    public void setPrezime(String prezime) {
        this.prezime = prezime;
    }

    @OneToMany(cascade=CascadeType.REFRESH, fetch=FetchType.LAZY, mappedBy="lijecnik")
    public List<Pacijent> getPacijenti() {
        return pacijenti;
    }

    public void setPacijenti(List<Pacijent> pacijenti) {
        this.pacijenti = pacijenti;
    }
    
    @Override
    public String toString(){
    	return this.prezime.concat(" ").concat(this.ime);
    }
    

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Lijecnik other = (Lijecnik) obj;
        if ((this.sifra == null) ? (other.sifra != null) : !this.sifra.equals(other.sifra)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 41 * hash + (this.sifra != null ? this.sifra.hashCode() : 0);
        return hash;
    }
    
}
